/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



package org.cip.esymons.tesoreria.beans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.tesoreria.bc.PresupuestoDelegate;
import org.cip.esymons.tesoreria.be.EnumEstadoPresupuesto;
import org.cip.esymons.tesoreria.be.Presupuesto;

/**
 *
 * @author Ingrid Capuñay
 */
public class PresupuestoController extends ControladorAbstracto{
    private PresupuestoDelegate delegado;
    private Presupuesto presupuesto;
    private String filtroNombrePresupuesto;

    public PresupuestoController() {
        delegado=new PresupuestoDelegate();
    }

    /**
     * @return the presupuesto
     */
    public Presupuesto getPresupuesto() {
        return presupuesto;
    }

    /**
     * @param presupuesto the presupuesto to set
     */
    public void setPresupuesto(Presupuesto presupuesto) {
        this.presupuesto = presupuesto;
    }


    public SelectItem[] getEstadoPresupuestosItems() {
        try {
            SelectItem[] select = new SelectItem[EnumEstadoPresupuesto.values().length];
            int cont = 0;
            for (EnumEstadoPresupuesto e : EnumEstadoPresupuesto.values()) {
                select[cont] = new SelectItem(e, e.name());
                cont++;
            }
            return select;
        } catch (Exception ex) {
            SelectItem[] select = new SelectItem[1];
            select[0] = new SelectItem(null, "No existen Estados");
            return select;
        }
    }

    public List<Presupuesto> autocompletarPresupuestos(Object event) {
        List<Presupuesto> lista = new ArrayList();
        String cond = event.toString().toUpperCase();
        try {
            lista = delegado.listaPresupuestosActivosPorCodigo(cond);
        } catch (Exception ex) {
            error(ex.toString());
        }
        return lista;
    }

    public String nuevoPresupuestoDesdeCC() {
        presupuesto = new Presupuesto();
        return null;
    }

    public String nuevo(){
        presupuesto=new Presupuesto();
        return "nuevo";
    }

    public String grabar(){
        presupuesto.setPreEstado(EnumEstadoPresupuesto.Activo);
        delegado.create(presupuesto);
        ControladorAbstracto.info("Se insertó satisfactoriamente el Presupuesto.");
        return "buscar";
    }

    public String actualizar(){
        delegado.edit(presupuesto);
        ControladorAbstracto.info("Se actualizó satisfactoriamente el Presupuesto.");
        return "buscar";
    }

    public String anularPresupuesto(){
        presupuesto.setPreEstado(EnumEstadoPresupuesto.Anulado);
        delegado.edit(presupuesto);
        return null;
    }

    public List<Presupuesto> getListaPresupuestos(){
        return delegado.findAll();
    }

    public boolean filtrarPresupuestoPorNombre(Object obj) {
        try {
            Presupuesto pe = (Presupuesto) obj;
            if (pe.getPreNombre().toLowerCase().indexOf(filtroNombrePresupuesto.toLowerCase()) >= 0) {
                return true;
            } else {
                return false;
            }
        } catch (Exception ex) {
            return true;
        }
    }

    /**
     * @return the filtroNombrePresupuesto
     */
    public String getFiltroNombrePresupuesto() {
        return filtroNombrePresupuesto;
    }

    /**
     * @param filtroNombrePresupuesto the filtroNombrePresupuesto to set
     */
    public void setFiltroNombrePresupuesto(String filtroNombrePresupuesto) {
        this.filtroNombrePresupuesto = filtroNombrePresupuesto;
    }


}
